// my-unscale-shift.asy
void drawshifted(path g, pair trueshift, picture pic = currentpicture,
                 Label label = "", pen pen = currentpen, arrowbar arrow = None,
                 arrowbar bar = None, margin margin = NoMargin,
                 marker marker = nomarker) {
  pic.add(new void(frame f, transform t) {
    picture opic;
    draw(opic, L = label, shift(trueshift) * t * g, p = pen, arrow = arrow,
         bar = bar, margin = margin, marker = marker);
    add(f, opic.fit());
  });
  pic.addBox(min(g), max(g), trueshift + min(pen), trueshift + max(pen));
}

settings.outformat = "pdf";
// size(5cm, 0);
// size(2cm, 0);
size(1cm, 0);
draw(unitcircle);
drawshifted(unitcircle, trueshift = (0.4cm, 0), pen = blue);